# Python图像处理
from PIL import Image
# 打开图片
im = Image.open('123.jpg')
# 显示图片
# im.show()

print('图像的格式：', im.format)
print('图像的大小：', im.size)
print('图像的宽度：', im.width)
print('图像的高度：', im.height)
# 传入坐标的元组
print('获取某个像素点的颜色值：', im.getpixel((10, 20)))



#  创建一个简单的图像
# ip = Image.new('RGB', (100, 100), 'red')
ip = Image.new('RGB', im.size, 'red')
# 保存这个图像
ip.save('red.png')

# 透明度混合
# 打开im1
im1 = Image.open('123.jpg').convert(mode='RGB')
# 创建一个和im1大小一样的图像
im2 = Image.new('RGB', im1.size, 'red')
# 混合图片，并显示
# mixing_p = Image.blend(im1, im2, 0.5).show()


# 遮罩混合
# 打开图像1
im1 = Image.open('123.jpg')   # 357
# 打开图像2
im2 = Image.open('red.png')  # 466
# 重新设置im2的大小
im2.resize(im1.size)
# 将图像2的三个色道分离，其中r、g、b都为Image对象
r, g, b = im2.split()
# im1.show()
print(b)
# 遮罩混合
# Image.composite(im1, im2, r).show()


# 按像素缩放
Image.eval(im1, lambda x:x*36).show()
# 按尺寸缩放是通过Image对象的thumbnail()方法实现的,这里缩放图像并不会对图像进行变形，即显示效果是一样的
im2.thumbnail((100, 100))


# 图像的剪切与粘贴
# 剪切图片
im_crop = im1.crop((200, 200, 400, 400))
# 粘贴图片
im2.paste(im_crop, (30, 30))

# 图像旋转和格式转换
# 图片旋转       Image.FILP_TOP_BOTTOM	上下翻转  Image.FILP_LEFT_RIGHT	左右翻转 Image.ROTATE_90	翻转90° Image.ROTATE_180	翻转180°  Image.TRANSPOSE	颠倒
im.rotate(90).show()
# convert：转换图像的模式
# transpose：转换图像的格式
im.transpose(Image.ROTATE_90).show()

# 分离和合并
# 通过Image对象的split()方法，将图像的RGB三个通道分离，并返回三个Image对象
r, g, b = im.split()
r1,g1,b1 = im1.split()
# 合并是通过Image.merge(mode, bands)方法实现的，其中mode为模式，bands为通道列表，传入一个列表类型数据
# 合并图像
im3 = Image.merge('RGB', [r, g1, b1])


# https://blog.csdn.net/ZackSock/article/details/103794134?utm_medium=distribute.pc_feed.none-task-blog-alirecmd-14.nonecase&depth_1-utm_source=distribute.pc_feed.none-task-blog-alirecmd-14.nonecase&request_id=



